今天,我們要施展的是系統開發中最實用的一式:「庫存查詢系統」。
一個能讓管理者快速掌握所有商品庫存狀況的介面,是POS系統不可或缺的核心功能。
我們將打造一個功能完整、介面美觀的庫存查詢頁面,讓管理者能對商品庫存一目了然。
我們的庫存查詢系統需要具備以下核心功能:
const product = {
id: 'F001', // 商品編號
name: '北歐風三人沙發', // 商品名稱
stock: 8, // 庫存數量
price: 25000, // 售價
category: '沙發', // 商品分類
imageUrl: '...', // 商品圖片
};
// 計算屬性:篩選後的商品
const filteredProducts = computed(() => {
let filtered = products.value;
// 搜尋篩選
if (searchQuery.value.trim()) {
const query = searchQuery.value.toLowerCase();
filtered = filtered.filter(
(product) =>
product.name.toLowerCase().includes(query) ||
product.id.toLowerCase().includes(query) ||
product.category.toLowerCase().includes(query),
);
}
// 分類篩選
if (selectedCategory.value) {
filtered = filtered.filter((product) => product.category === selectedCategory.value);
}
// 排序
filtered.sort((a, b) => {
switch (sortBy.value) {
case 'name':
return a.name.localeCompare(b.name);
case 'stock':
return b.stock - a.stock;
case 'price':
return b.price - a.price;
case 'category':
return a.category.localeCompare(b.category);
default:
return 0;
}
});
return filtered;
});
computed
屬性實現響應式篩選// 庫存等級判斷
const getStockLevelClass = (stock) => {
if (stock < 10) return 'critical'; // 緊急
if (stock < 20) return 'low'; // 不足
if (stock < 50) return 'medium'; // 正常
return 'high'; // 充足
};
// 低庫存商品統計
const lowStockCount = computed(() => {
return filteredProducts.value.filter((product) => product.stock < 20).length;
});
<div class="product-card" :class="{ 'low-stock': product.stock < 20 }">
<div class="product-image">
<div class="stock-badge" :class="getStockLevelClass(product.stock)">
{{ getStockLevelText(product.stock) }}
</div>
</div>
<div class="product-info">
<h3 class="product-name">{{ product.name }}</h3>
<p class="product-id">編號: {{ product.id }}</p>
<p class="product-category">{{ product.category }}</p>
<div class="product-details">
<div class="price-info">
<span class="price-label">售價</span>
<span class="price">NT$ {{ product.price.toLocaleString() }}</span>
</div>
<div class="stock-info">
<span class="stock-label">庫存</span>
<span class="stock-count" :class="getStockLevelClass(product.stock)">
{{ product.stock }} 件
</span>
</div>
</div>
</div>
</div>
/* 庫存等級樣式 */
.stock-badge.critical {
background: linear-gradient(135deg, #ff6b6b, #ee5a52);
}
.stock-badge.low {
background: linear-gradient(135deg, #feca57, #ff9ff3);
}
.stock-badge.medium {
background: linear-gradient(135deg, #48dbfb, #0abde3);
}
.stock-badge.high {
background: linear-gradient(135deg, #1dd1a1, #55a3ff);
}
15種不同類型的家具商品,涵蓋:
// 使用 ref 管理響應式狀態
const searchQuery = ref('');
const selectedCategory = ref('');
const sortBy = ref('name');
// 使用 computed 實現派生狀態
const filteredProducts = computed(() => {
// 複雜的篩選邏輯
});
@keyup.enter
避免過度觸發v-if
避免不必要的DOM操作完成後的庫存查詢系統具備:
✅ 完整的搜尋功能 - 支援多欄位模糊搜尋
✅ 智能分類篩選 - 動態生成分類選項
✅ 多維度排序 - 四種排序方式
✅ 庫存警告系統 - 自動標示低庫存商品
今天,我們成功打造了一個功能完整的庫存查詢系統。這個系統不僅展示了Vue 3的強大功能,更體現了現代前端開發的最佳實踐。
明日,Day 25:[Systemの呼吸・貳之型] 客戶資料管理(上):介面結構、搜尋與雙視圖設計。心を燃やせ 🔥!